package org.ilc.socketserver;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用于存储客户端帐号与session id
 * @author malongbo
 */
public class SessionMapping {
	private Map<String,Long> sessionsMap = null;

	public SessionMapping(){
		sessionsMap=new HashMap<String,Long>(0);
	}

	/**
	 * 如果在线 返回id 否则返回-1
	 * @param binding 用户IMEI号 或者其他
	 * @return
	 */
	public synchronized long getId(String user){
		if(sessionsMap.containsKey(user))
			return sessionsMap.get(user);
		return -1;
	}

	/**
	 * 获取所有在线帐号
	 * @return
	 */
	public synchronized List<String> getOnlines(){
		if(sessionsMap.size()>0){
			List<String> s = new ArrayList<String>(0);
			s.addAll(sessionsMap.keySet());
			return s;
		}
		
		return null;
	}

	/**
	 * 判断帐号是否在线
	 * @param binding
	 * @return
	 */
	public synchronized boolean isExist(String user){
		if(null==user)
			return false;
	
		return sessionsMap.containsKey(user);
	}

	/**
	 * 当session关闭的时候删除
	 * @param binding
	 */
	public synchronized void remove(String user){
		sessionsMap.remove(user);
	
	}

	/**
	 * 注册
	 * @param binding 用户绑定号
	 * @param id　会话id
	 */
	public synchronized void register(String user,long id){
		sessionsMap.put(user, id);
	}

	/**
	 * clean up
	 */
	public synchronized void cleanUp(){
		sessionsMap.clear();
		sessionsMap=null;
	}
}
